package resty.tedu.case00;

/**
 * <pre>
 *  内部类.
 *      内部类应用的地方相对而言不会太多,但在程序的使用中又不可缺少.
 *      比如在监听某些事件的时候都是通过内部类来完成的.
 *  内部类的种类:
 *      1.普通内部类
 *          1.1内部类访问外部类.方法见method1()~method4()
 *          1.2外部类访问内部类.方法见
 *      2.局部内部类
 *      3.静态内部类
 *      4.匿名内部类
 *      
 *      
 * </pre>
 *
 * @author : restyhap
 * @date : 2019年03月17日
 */
public class InnerDemo {
    Inner inner;
    
    public Inner getInner(){
        return new Inner();
    }
    
    private String name = "张三";
    private String getName(){
        return name;
    }
    /**
     * 这是一个普通的内部类
     */
    class Inner{
        private String name = "李四";


        /***
         * 当前方法是调用内部类及局部变量的调用
         */
        public void method4() {
            String name = "王五";
            System.out.println("内部类的全局变量的name是:"+this.name+"\t局部变量的name是:"+name);
        }

        /***
         * 当前方法是如何调用与外部类同名时的变量的获取
         */
        public void method3(){
            System.out.println("获取内部类与外部类有同名时的外部类name:"+InnerDemo.this.name);
        }
        /**
         * 当前方法是调用内部类同级的方法 
         */
        public void method2(){
            System.out.println(getName());
        }
        /***
         * 当前方法是调用内部类同级的私有化变量
         */
        public void method1(){
            System.out.println("获取外部类的没有同名的name:"+name);            
        }

        
    }
}
